home *** CD-ROM | disk | FTP | other *** search
- <?php
- //
- // +----------------------------------------------------------------------+
- // | PHP version 4.0 |
- // +----------------------------------------------------------------------+
- // | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group |
- // +----------------------------------------------------------------------+
- // | This source file is subject to version 2.02 of the PHP license, |
- // | that is bundled with this package in the file LICENSE, and is |
- // | available at through the world-wide-web at |
- // | http://www.php.net/license/2_02.txt. |
- // | If you did not receive a copy of the PHP license and are unable to |
- // | obtain it through the world-wide-web, please send a note to |
- // | license@php.net so we can mail you a copy immediately. |
- // +----------------------------------------------------------------------+
- // | Authors: Sebastian Bergmann <sb@phpOpenTracker.de> |
- // +----------------------------------------------------------------------+
- //
- // $Id: Iterate.php,v 1.1 2000/09/29 20:22:36 chagenbu Exp $
- //
-
- require_once "Benchmark/Timer.php";
-
- /**
- * Benchmark::Benchmark_Iterate
- *
- * Purpose:
- *
- * Benchmarking
- *
- * Example:
- *
- * $benchmark = new Benchmark_Iterate;
- *
- * $benchmark->run( "my_function", 100 );
- *
- * $result = $benchmark->get();
- *
- * @author Sebastian Bergmann <sb@phpOpenTracker.de>
- * @version $Revision: 1.1 $
- * @access public
- */
-
- class Benchmark_Iterate extends Benchmark_Timer
- {
- // {{{ run()
-
- /**
- * Benchmarks a function.
- *
- * @param string $function name of the function to be benchmarked
- * @param int $iterations number of iterations (default: 100)
- * @access public
- */
-
- function run( $function, $iterations = 100 )
- {
- for( $i = 1; $i <= $iterations; $i++ )
- {
- $this->set_marker( "start_" . $i );
-
- call_user_func( $function );
-
- $this->set_marker( "end_" . $i );
- }
- }
-
- // }}}
- // {{{ get()
-
- /**
- * Returns benchmark result.
- *
- * $result[ x ] = execution time of iteration x
- * $result[ "mean" ] = mean execution time
- * $result[ "iterations" ] = number of iterations
- *
- * @return array $result
- * @access public
- */
-
- function get()
- {
- $result = array();
- $total = 0;
-
- $iterations = count( $this->markers ) / 2;
-
- for( $i = 1; $i <= $iterations; $i++ )
- {
- $time = $this->time_elapsed( "start_" . $i , "end_" . $i );
-
- $total = bcadd( $total, $time, 6 );
- $result[ $i ] = $time;
- }
-
- $result[ "mean" ] = bcdiv( $total, $iterations, 6 );
- $result[ "iterations" ] = $iterations;
-
- return $result;
- }
-
- // }}}
- }
- ?>
-